import { http } from '@/utils/http';
import type { ResponseBody } from './typing';

const API: any = {
    // 公众号静默登录
    silentLogin: '/core/user/login/official/login',
    // 公众号获取头像昵称
    officialAuthV2: '/core/user/login/official/officialAuthV2',
    // 获取小程序配置路由
    miniAppRoute: '/core/order/common/miniAppRoute',
    //收款码 - 获取下单所需信息（下单页面）
    getInfoForCollect: '/core/order/collectMoney/collect/getInfoForCollect',
    // 支付结果页数据
    getPaySuccessOrderInfo: '/core/order/collectMoney/collect/getPaySuccessOrderInfo',
    // 微信点金计划查询支付结果，不用token信息
    getPaySuccessOrderInfo4DJ: '/core/order/collectMoney/collect/getPaySuccessOrderInfo4DJ',
    // 创建订单
    createOrder: '/core/order/collectMoney/collect/createOrder',
    // 订单支付
    orderToPay: '/core/order/collectMoney/collect/toPay',
    // 获取订单结果页小程序码
    generateMiniCode: '/core/miniAppCode/generateMiniCode',
    //微信点金计划查询小程序码，不用token信息
    generateMiniCode4DJ: '/core/miniAppCode/generateMiniCode4DJ',
    // 获取公众号授权配置
    getConfig: '/core/official/config/getConfig',
    // 获取H5支付的appid和商户号
    getOfficialAccountPayInfo: '/core/order/collectMoney/collect/getOfficialAccountPayInfo',
    saveAddress: '/core/order/receive_address/saveReceiveAddress', //用户收货地址 - 新增、更新
    queryAddressAllProvince: '/core/pay/merchant/apply/common/queryAddressAllProvince', //获取省市区配置
    queryAddressByParentId: '/core/pay/merchant/apply/common/queryAddressByParentId', // 获取子集（获取城市、获取区县）
    getOrderInfo: '/core/order/create/seller/getOrderInfo', // 获取开单收款订单信息
    createReceiveOrder: '/core/order/create/seller/createOrder', // 开单收款创建订单
    getRelayInfo: '/core/order/relay/pay/getRelayInfo', // 获取接龙信息
    getPayRecordList: '/core/order/relay/pay/getPayRecordList', // 获取接龙记录
    createRelayPayOrder: '/core/order/relay/pay/createOrder', // 创建接龙订单
    getCollectPayRecordList: '/core/order/collectMoney/collect/getPayRecordList', // 获取收款码或开单收款的收款记录
    // 根据映射id查询添加的参数, 主要用于二维码参数映射
    getMappingById: '/core/user/id/mapping/getByIdValue',
    // 跳过授权
    skipAuth: '/core/user/login/miniApp/skipAuth',
    // 日志系统-添加单个日志
    addLogSingle: '/ims/log/add/logAdd4CollectClientV1',
    // 日志系统-添加多个日志
    addLogList: '/ims/log/add/logAddList4CollectClientV1'
};

/**
 * 通用接口请求方法, 默认post
 * @param url 请求接口名
 * @param params 参数
 * @param opts 扩展项
 * @returns
 */
const fetchPost = (url: string, params?: object, opts?: object): Promise<ResponseBody> =>
    http.request(
        {
            url: API[url],
            params
        },
        opts
    );

/**
 * 通用接口get请求方法
 * @param url 请求接口名
 * @param params 参数
 * @param opts 扩展项
 */
const fetchGet = (url: string, params?: object, opts?: object): Promise<ResponseBody> => {
    return http.request(
        {
            url: API[url],
            params,
            method: 'get'
        },
        opts
    );
};

export default { API, fetchPost, fetchGet };
